'use strict'

module.exports = async (c , next) => {

    // 兼容处理，既可以通过小程序拿到token，也可以通过url参数拿到token值
    let token = c.headers.authorization || c.query.token;
    console.log(token)
    if (!token) {
        return c.status(403).send('TOKEN NULL');
    }

    let r = c.service.tok.verify(token);

    // 通过ok判断是否成功、失败，errcode属性表示失败的状态码
    if (!r.ok) {
        // errcode的值可能是FAILED TIMEOUT ILLEGAL
        return c.status(403).send(r.errcode)
    }

    // 这里的c.box可以理解为一个容器，平时是个空对象
    c.box.user = r.data;

    await next();
}